import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 设置中文字体
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=16)

# 加载CSV文件
file_path = 'D:\project-2024-AA\联合.csv'
data = pd.read_csv(file_path)

# 转换fhjl_time为datetime格式
data['fhjl_time'] = pd.to_datetime(data['fhjl_time'])

# 过滤2023年的数据
data_2023 = data[data['fhjl_time'].dt.year == 2023]

# 按月和货品类型（hplx）分组并汇总发货吨位（fhdw）
monthly_sales_2023 = data_2023.groupby([data_2023['fhjl_time'].dt.month, 'hplx'])['fhdw'].sum().unstack()

# 绘制2023年每月水泥和矿粉的销量趋势图
plt.figure(figsize=(14, 8))
ax = monthly_sales_2023.plot(kind='bar', figsize=(14, 8), width=0.8)
plt.title('2023年每月水泥和矿粉销量', fontproperties=font)
plt.xlabel('月份', fontproperties=font)
plt.ylabel('销量（吨）', fontproperties=font)
plt.legend(title='货品类型', prop=font)
plt.grid(True, linestyle='--', linewidth=0.5)
plt.xticks(rotation=0, fontproperties=font)
plt.yticks(fontproperties=font)

# 在柱状图上显示具体数据
for container in ax.containers:
    ax.bar_label(container, fmt='%.0f 吨', fontproperties=font)

plt.tight_layout()
plt.show()

# 计算2023年水泥和矿粉的总销量
cement_total = data_2023[data_2023['hplx'] == '水泥']['fhdw'].sum()
slag_total = data_2023[data_2023['hplx'] == '矿粉']['fhdw'].sum()

# 绘制2023年水泥销量的饼图
plt.figure(figsize=(10, 6))
cement_monthly = data_2023[data_2023['hplx'] == '水泥'].groupby(data_2023['fhjl_time'].dt.month)['fhdw'].sum()
plt.pie(cement_monthly, labels=cement_monthly.index, autopct='%1.1f%%', startangle=140, textprops={'fontproperties': font}, pctdistance=0.85)
plt.title('2023年水泥销量分布', fontproperties=font)
plt.axis('equal')

# 将百分比标签移到外层
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.tight_layout()
plt.show()

# 绘制2023年矿粉销量的饼图
plt.figure(figsize=(10, 6))
slag_monthly = data_2023[data_2023['hplx'] == '矿粉'].groupby(data_2023['fhjl_time'].dt.month)['fhdw'].sum()
plt.pie(slag_monthly, labels=slag_monthly.index, autopct='%1.1f%%', startangle=140, textprops={'fontproperties': font}, pctdistance=0.85)
plt.title('2023年矿粉销量分布', fontproperties=font)
plt.axis('equal')

# 将百分比标签移到外层
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.tight_layout()
plt.show()

